Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO


■割り込みコントローラ
対象	ノーマル,ハイレゾ
チップ	8259A相当品
解説  o PC-9800(PC-98LT・HA,DB-P1を除く)では、割り込みコントローラ(PIC)として
	8259A相当品を2個使用している。1個はCPUに対して直接割り込みリクエストを
	行うマスタPIC、残りの1個はマスタPICを介して割り込みリクエストを行う
	スレーブPICとして使用される。
      o マスタPICとスレーブPICの接続概念図を示す。
		マスタPIC
	        +-----------+
	        |        IR0|←---- IR0(INT 08h)
	        |        IR1|←---- IR1(INT 09h)
	        |        IR2|←---- IR2(INT 0Ah)
	   CPU←|INT     IR3|←---- IR3(INT 0Bh)
	        |        IR4|←---- IR4(INT 0Ch)
	        |        IR5|←---- IR5(INT 0Dh)
	        |        IR6|←---- IR6(INT 0Eh)
	        |        IR7|←+
	        +-----------+  |
	     +-----------------+
	     |	スレーブPIC
	     |  +-----------+
	     |  |        IR0|←---- IR8 (INT 10h)
	     |  |        IR1|←---- IR9 (INT 11h)
	     |  |        IR2|←---- IR10(INT 12h)
	     +--|INT     IR3|←---- IR11(INT 13h)
	        |        IR4|←---- IR12(INT 14h)
	        |        IR5|←---- IR13(INT 15h)
	        |        IR6|←---- IR14(INT 16h)
	        |        IR7|←---- IR15(INT 17h)
	        +-----------+
      u PC-98LT・HA,DB-P1は、V50内蔵ICU(Interrupt Control Unit)を使用し、
	スレーブPICは持たない。V50内蔵ICUはμPD71059(8259A)互換。I/Oアドレスは
	他機種のマスタPICと同じ。
      o NMI(Non Maskable Interrupt)やSMM搭載CPUのSMI(System Management 
	Interrupt)は、割り込みコントローラでは制御できない。
      o 割り込みコントローラ関連のI/Oアドレスは以下の通り。
	-----------+----+---+-------------------------------------------------
	I/Oアドレス|幅  |R/W|内容
	-----------+----+---+-------------------------------------------------
	0000h      |BYTE|R/W|割り込みコントローラ(マスタ)
	0002h      |BYTE|R/W|割り込みコントローラ(マスタ)
	0008h      |BYTE|R/W|割り込みコントローラ(スレーブ)
	000Ah      |BYTE|R/W|割り込みコントローラ(スレーブ)
	98D2h      |BYTE|R/W|割り込みモード設定(bit 7〜0=IR7〜IR0)
	98D4h      |BYTE|R/W|割り込みモード設定(bit 7〜0=IR15〜IR8)
	-----------+----+---+-------------------------------------------------
関連	I/O 0050h
	I/O 0052h		
	I/O FE8Eh■[PC-9801NS/T・NS/R・P・NX/C・NS/A・NL/R,PC-9821Ne]
	I/O 6B8Eh■[PC-9821Nf・Np・Ns・Ne2・Nd・Nm・Lt・Ld,PC-9801NL/A]
	I/O 0259h,0A59h - 70〜73h	
	INT 08〜17h


I/O	0000h
名前	割り込みコントローラ(マスタ)
対象	全PC-9800シリーズ
チップ	8259A相当
機能
	表[イニシャライズコマンドワード]参照
解説  o 割り込みコントローラのイニシャライズ、IRR(Interrupt Request Register)
	とISR(In Service Register)の読み出し、EOI(End Of Interrupt)の送出など
	に使用する。詳細はデータシート参照。
      o PC-9800では、EOI時に「非特殊EOI」を使用する。
		mov	al,20h
		out	0000h,al
	でEOIが発行できる。
関連	I/O 0002h
	INT 08〜0Fh


I/O	0002h
名前	割り込みコントローラ(マスタ)
対象	全PC-9800シリーズ
チップ	8259A相当
機能
	[READ/WRITE]
	bit 7: IR7(INT 0Fh)
	bit 6: IR6(INT 0Eh)
	bit 5: IR5(INT 0Dh)
	bit 4: IR4(INT 0Ch)
	bit 3: IR3(INT 0Bh)
	bit 2: IR2(INT 0Ah)
	bit 1: IR1(INT 09h)
	bit 0: IR0(INT 08h)
		1= 割り込み禁止
		0= 割り込み許可
解説  o 割り込みコントローラ(マスタ)のIMRレジスタの読み書きを行う。
	イニシャライズ時のコマンド(ICW2〜ICW4)書き込みにも使用する。
関連	I/O 0000h
	INT 08〜0Fh


I/O	0008h
名前	割り込みコントローラ(スレーブ)
対象	ノーマル,ハイレゾ
チップ	8259A相当
機能
	表[イニシャライズコマンドワード]参照
解説  o 割り込みコントローラのイニシャライズ、IRR(Interrupt Request Register)
	とISR(In Service Register)の読み出し、EOI(End Of Interrupt)の送出など
	に使用する。詳細はデータシート参照。
      o PC-9800では、EOI時に「非特殊EOI」を使用する。
		mov	al,20h
		out	0008h,al
	でEOIが発行できる。なお、スレーブPICでEOI送出後、スレーブPICにサービス
	中の割り込みがなくなったときにはマスタPICにもEOIを発行する必要がある。
	以下のような処理を行う。
		cli
		mov	al,20h		;Send EOI to SLAVE
		out	0008h,al
		jmp	$+2		;I/O WAIT
		mov	al,0Bh		;ISR read mode set(slave)
		out	0008h,al
		jmp	$+2		;I/O WAIT
		in	al,0008h	;ISR read(slave)
		cmp	al,00h		;slave pic in-service ?
		jne	EoiEnd
		mov	al,20h		;Send EOI to MASTER
		out	0000h,al
	EoiEnd:	sti
関連	I/O 000Ah
	INT 10〜17h


I/O	000Ah
名前	割り込みコントローラ(スレーブ)
対象	ノーマル,ハイレゾ
チップ	8259A相当
機能
	[READ/WRITE]
	bit 7: IR15(INT 17h)
	bit 6: IR14(INT 16h)
	bit 5: IR13(INT 15h)
	bit 4: IR12(INT 14h)
	bit 3: IR11(INT 13h)
	bit 2: IR10(INT 12h)
	bit 1: IR9 (INT 11h)
	bit 0: IR8 (INT 10h)
		1= 割り込み禁止
		0= 割り込み許可
解説  o 割り込みコントローラ(スレーブ)のIMRレジスタの読み書きを行う。
	イニシャライズ時のコマンド(ICW2〜ICW4)書き込みにも使用する。
関連	I/O 0008h
	INT 10〜17h


表	イニシャライズコマンドワード
	割り込みコントローラは、システム起動時にBIOS(ITF)によって以下のように
	初期化される。通常、ユーザプログラムが割り込みコントローラを初期化
	しなおす必要はない。
	--------+--------------------------------------------------------------
	コマンド名	|内容
	--------+--------------------------------------------------------------
	ICW1	|bit 7〜5: A7〜A5
		|	* PC-9800では000bに設定(86系CPUモード)
		|bit 4: 常に1
		|bit 3: LTIM
		|	* PC-9800では0に設定(エッジトリガモード)
		|       * PC-H98はレベルトリガモードもサポートしているが、
		|         外部回路で処理しているため、PICはエッジトリガに
		|         設定する。
		|bit 2: ADI
		|	* PC-9800では0に設定(86系CPUモード)
		|bit 1: SNGL
		|	* PC-9800(PC-98LT・HA,DB-P1を除く)では0に設定
		|         (ノットシングル)
		|       * PC-98LT・HA,DB-P1では1に設定(シングル)
		|bit 0: IC4
		|	0= ICW4を送出しない
		|	1= ICW4を送出する
	--------+--------------------------------------------------------------
	ICW2	|bit 7〜3: T7〜T3
		|	* インタラプトベクタアドレスの上位5ビットを設定する
		|	  PC-9800のマスタでは00001bを設定(INT 08〜0Fh)
		|	  PC-9800のスレーブでは00010bを設定(INT 10〜17h)
		|         (PC-98HA,DB-P1は、V50内蔵ICUに00010bを設定する)
		|bit 2〜0: A10〜A8
		|	* PC-9800では000bに設定(86系CPUモード)
	--------+--------------------------------------------------------------
	ICW3	|■マスタPIC
	    	|bit 7〜0: S7〜S0
	     	|	* PC-9800(PC-98LT・HA,DB-P1を除く)のマスタでは
		|	  10000000bを設定(IR7のみスレーブ入力を持つ)。
	    	|■スレーブPIC
	    	|bit 7〜3: 常に0
	       	|bit 2〜0: ID2〜ID0
		|	* PC-9800のスレーブでは111bに設定(スレーブID)
	--------+--------------------------------------------------------------
	ICW4	|bit 7〜5: 未定義(常に000b)
		|bit 4: SFNM
		|	1= スペシャルフリイネスティッドモード
		|	0= ノットスペシャルフリイネスティッドモード
		|bit 3: BUF
		|	* PC-9800では1に設定(バッファモード)
		|bit 2: M/S
		|	* PC-9800のマスタでは1に設定
		|	* PC-9800のスレーブでは0に設定
		|bit 1: AE01
		|	* PC-9800では0に設定(ノーマルEOI)
		|bit 0: μPM
		|	* PC-9800では1に設定(86系CPUモード)
	--------+--------------------------------------------------------------


I/O	98D2h,98D4h
名前	PIC割り込みモード制御
	Undocumented
対象	PC-H98
チップ	
機能
	-----------+----+---+-------------------------------------------------
	I/Oアドレス|幅  |R/W|内容
	-----------+----+---+-------------------------------------------------
	98D2h      |BYTE|R/W|割り込みモード設定(bit 7〜0=IR7〜IR0)
	98D4h      |BYTE|R/W|割り込みモード設定(bit 7〜0=IR15〜IR8)
	-----------+----+---+-------------------------------------------------
	1= レベルトリガ
	0= エッジトリガ(従来互換)
解説  o PC-H98では、割り込み信号線をレベルトリガに設定することもできる。この
	ポートで、各割り込み信号線をエッジトリガで使用するか、レベルトリガで
	使用するか設定する。
      o この設定は、割り込みコントローラの外部回路に対して行われる。PC-9800
	では、割り込みコントローラはエッジトリガで使用している。
	レベルトリガモードのときは、レベルセンシティブの外部回路が、エッジ
	トリガの信号を発生して割り込みコントローラに割り込みを掛けるように
	なる。
関連